package util;

import java.util.HashSet;

/**
 * @author Ayase
 * @date 2020/8/10-15:25
 */
public class RandomArray {
    private int[] arr;

    public RandomArray(int length){
        arr = new int[length];
    }

    public RandomArray(){
        this(3);
    }

    /**
     * @MethodName generateRandomArr
     * @Description TODO 利用hashset不重复产生无重复[0，n-1]数组
     * @Param [n] n为数值范围
     * @Return int[]
     * @author Ayase
     * @date 17:25
     */
    public int[] generateRandomArr(int n){
        /**
         * 防止出现死循环
         */
        if(n<arr.length){
            throw new IllegalArgumentException("输入的范围小于数组长度，请检查语句");
        }
        HashSet<Integer> hs = new HashSet<>();
        while(hs.size()<arr.length){
            int ran = (int)(Math.random()*n);
            hs.add(ran);
        }
        Integer[] temp = hs.toArray(new Integer[]{});
        for(int i = 0 ; i < arr.length ; i++){
            /**
             * jdk内只能默认拆箱一定范围的值，若超出将会返回对象
             * 若两对象==比较将会返回false
             * 将其放进int中可以正常比较，但建议养成习惯
             */
            arr[i] = temp[i].intValue();
        }
        return arr;
    }

    public int[] toArray() {
        return arr;
    }

    public int get(int i){
        return arr[i];
    }

    public int length(){
        return arr.length;
    }
}
